package com.example.hjlquickstartdemo.base;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 对应数据传输对象的公共字段
 * 实现序列化
 * @author HeJiaLe
 * @date 2023/07/17 14:04
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode

@ApiModel(value = "BaseDto",description = "数据传输对象基类,对应数据传输对象的公共字段")
public class BaseDto implements Serializable {

    private static final long serialVersionUID = 612500767713934855L;
    /**
     *  记录被创建的时间
     */
    @ApiModelProperty("创建时间")
    private Date createdTime;
    /**
     *  创建人用于跟踪谁创建也用于按人员查询数据
     */
    @ApiModelProperty("创建人")
    private Long createdBy;
    /**
     *  更新时间
     */
    @ApiModelProperty("修改时间")
    private Date updatedTime;
    /**
     *  更新人
     */
    @ApiModelProperty("修改人")
    private Long updatedBy;
    /**
     *  状态 具体参考常量
     */
    @ApiModelProperty("状态 0 代表注销或者假删除   1 代表正常")
    private Byte status;
    /**
     *  版本 初始为1 由mybatis 插件自动维护
     */
    @ApiModelProperty("版本号采用随机数")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long version;
}
